<?php

session_start();
include('include/config.php');
include('include/fonctions.php');
$messageErrMail = 'Page : gen-eleve.php<br />';
actualiser_session();

//On test avant toute chose que l'on a bien l'id d'un prof
if (isset($_SESSION['prof_id'])) {
    $trimNomFic = 'liste-eleve';

    /*     * **********************************
     *      Définition pdf
     * *********************************** */

    require('fpdf17/fpdf.php');

    class PDF extends FPDF {

        // En-tête du pdf qui va se retrouver sur toutes les feuilles à générer
        function Header() {
            //on récupère le nom de l'école et le nom de l'engseignant
            global $titreTab, $titre, $fontBool;
            // Police Arial gras 15
            $this->SetFont('helvetica', 'B', 16);
            $this->Cell(0, 0, utf8_decode($titre), 0, 2, 'C');
            $this->Ln(8);
            $this->Cell(0, 0, utf8_decode($titreTab), 0, 2, 'C');
            $this->Ln(8);
            //intitulé du tableau
            $this->SetFont('helvetica', 'B', 13);
            $this->Cell(19);
            $this->Cell(20, 10, utf8_decode('Classe'), 1, 0, 'C');
            $this->Cell(15, 10, utf8_decode('Genre'), 1, 0, 'C');
            $this->Cell(30, 10, utf8_decode('Date'), 1, 0, 'C');
            $this->Cell(45, 10, utf8_decode('Nom'), 1, 0, 'C');
            $this->Cell(45, 10, utf8_decode('Prénom'), 1, 0, 'C');
            $this->Ln();
            $this->SetFont('helvetica', '', 11);
        }

    }

    // Instanciation de la classe dérivée
    $pdf = new PDF();
    // Titres des colonnes
    $pdf->SetFont('helvetica', '', 12);


    $connection = connexionBdd();
    /*     * *******************************************************************
     *    On récupère l'ensemble des paramètres d'un professeur,
     *    comme son nom, civilité et les option de son compte
     * ******************************************************************* */
    $req = $connection->prepare('SELECT `prof_id`,
                                `prof_nom`,
                                `prof_civ`
                                FROM `prof`
                                WHERE `prof_id` =:id
                                LIMIT 0 , 1');
    $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
    $req->execute();
    $donnees = $req->fetch(PDO::FETCH_ASSOC);
    $req->closeCursor();

    //titre Civ+Nom enseignant
    $titre = 'Classe de ' . $donnees['prof_civ'] . ' ' . $donnees['prof_nom'];

    /*     * ****************************************************************************
     *      On cherche à connaitre le nombre de niveau
     *      que possède l'enseignant pour savoir si on imprime les pages par classe
     * **************************************************************************** */
    $reqNbrNiveau = $connection->prepare('SELECT DISTINCT  `id_niveau`, `nom_niveau`
                                        FROM  `eleve`
                                        NATURAL JOIN `niveau`
                                        WHERE  `id_prof` =:id
                                        ORDER BY `id_niveau`
                                        LIMIT 0 , 10');
    $reqNbrNiveau->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
    $reqNbrNiveau->execute();
    $nbrNiveau = $reqNbrNiveau->rowCount();
    $tabNiveau = $reqNbrNiveau->fetchAll(PDO::FETCH_ASSOC);
    $reqNbrNiveau->closeCursor();


    /*     * *********************************************************************************************
     *      on récupère la liste des elèves d'un enseignant
     * ********************************************************************************************* */
    $req = $connection->prepare('SELECT `nom_eleve`,`prenom_eleve`,`sexe_eleve`, `date_eleve`,`id_niveau`,`nom_niveau`
                            FROM `eleve` e NATURAL JOIN `niveau`
                            WHERE `id_prof`=:id
                            ORDER BY `id_niveau`, `nom_eleve`,`prenom_eleve`');
    $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
    $req->execute();
    $tabEleve = $req->fetchAll(PDO::FETCH_ASSOC);
    $req->closeCursor();

//    echo '<pre>';
//    print_r($tabEleve);
//    echo '</pre>';

    /*     * *********************************************************************************************
     *      on récupère la liste des elèves d'un enseignant par ordre d'age
     * ********************************************************************************************* */
    $req = $connection->prepare('SELECT `nom_eleve`,`prenom_eleve`,`sexe_eleve`, `date_eleve`,`id_niveau`,`nom_niveau`
                            FROM `eleve` e NATURAL JOIN `niveau`
                            WHERE `id_prof`=:id
                            ORDER BY `id_niveau`, `date_eleve`, `nom_eleve`,`prenom_eleve`');
    $req->bindParam(':id', $_SESSION['prof_id'], PDO::PARAM_INT);
    $req->execute();
    $tabEleveAge = $req->fetchAll(PDO::FETCH_ASSOC);
    $req->closeCursor();

    /* ----------------------------------------------------------------------------------------------------------------- */

    /*                                  AFFICHAGE                                                                                                 */

    /* ----------------------------------------------------------------------------------------------------------------- */

    /*     * *******************************************************
     *   Classe entière même multiclasse ordre alphabétique
     * ******************************************************* */
    $titreTab = 'Classe complète par ordre alphabétique';
    $pdf->AddPage();
    $fontBool = true;
    $pdf->SetFillColor(240, 240, 240);

    foreach ($tabEleve as $value) {
        //gestion de l'alternance de la couleur de fond des lignes
        if ($value['sexe_eleve'] == 1) {
            $sexe = 'G';
        } else {
            $sexe = 'F';
        }
        $date = date_create(stripslashes(utf8_decode($value['date_eleve'])));
        $pdf->Cell(19);
        $pdf->Cell(20, 7, stripslashes(utf8_decode($value['nom_niveau'])), 1, 0, 'C', $fontBool);
        $pdf->Cell(15, 7, stripslashes(utf8_decode($sexe)), 1, 0, 'C', $fontBool);
        $pdf->Cell(30, 7, date_format($date, 'd/m/Y'), 1, 0, 'C', $fontBool);
        $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['nom_eleve'])), 1, 0, 'L', $fontBool);
        $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['prenom_eleve'])), 1, 0, 'L', $fontBool);
        $pdf->Ln();
        $fontBool = !$fontBool;
    }


    /*     * *******************************************************
     *             Par classe si multiclass
     * ******************************************************* */
    if ($nbrNiveau > 1) {
        foreach ($tabNiveau as $value2) {

            // Rendre dynamique le titre de la page en ajouter le nom niveau au calcul de niveau.
            $titreTab = $value2['nom_niveau'] . ' par ordre alphabétique';

            $pdf->AddPage();
            $fontBool = true;
            $pdf->SetFillColor(240, 240, 240);

            foreach ($tabEleve as $value) {
                if ($value2['id_niveau'] == $value['id_niveau']) {
                    //gestion de l'alternance de la couleur de fond des lignes
                    if ($value['sexe_eleve'] == 1) {
                        $sexe = 'G';
                    } else {
                        $sexe = 'F';
                    }
                    $date = date_create(stripslashes(utf8_decode($value['date_eleve'])));
                    $pdf->Cell(19);
                    $pdf->Cell(20, 7, stripslashes(utf8_decode($value['nom_niveau'])), 1, 0, 'C', $fontBool);
                    $pdf->Cell(15, 7, stripslashes(utf8_decode($sexe)), 1, 0, 'C', $fontBool);
                    $pdf->Cell(30, 7, date_format($date, 'd/m/Y'), 1, 0, 'C', $fontBool);
                    $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['nom_eleve'])), 1, 0, 'L', $fontBool);
                    $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['prenom_eleve'])), 1, 0, 'L', $fontBool);
                    $pdf->Ln();
                    $fontBool = !$fontBool;
                }
            }
        }
    }

    /*     * *******************************************************
     *   Classe entière même multiclasse ordre age
     * ******************************************************* */
    $titreTab = 'Classe complète par ordre d\'âge';

    $pdf->AddPage();
    $fontBool = true;
    $pdf->SetFillColor(240, 240, 240);

    foreach ($tabEleveAge as $value) {
        //gestion de l'alternance de la couleur de fond des lignes
        if ($value['sexe_eleve'] == 1) {
            $sexe = 'G';
        } else {
            $sexe = 'F';
        }
        $date = date_create(stripslashes(utf8_decode($value['date_eleve'])));
        $pdf->Cell(19);
        $pdf->Cell(20, 7, stripslashes(utf8_decode($value['nom_niveau'])), 1, 0, 'C', $fontBool);
        $pdf->Cell(15, 7, stripslashes(utf8_decode($sexe)), 1, 0, 'C', $fontBool);
        $pdf->Cell(30, 7, date_format($date, 'd/m/Y'), 1, 0, 'C', $fontBool);
        $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['nom_eleve'])), 1, 0, 'L', $fontBool);
        $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['prenom_eleve'])), 1, 0, 'L', $fontBool);
        $pdf->Ln();
        $fontBool = !$fontBool;
    }

    /*     * *******************************************************
     *   Les garçons par ordre alphabétique
     * ******************************************************* */
    $titreTab = 'Les garçons par ordre alphabétique';

    $pdf->AddPage();
    $fontBool = true;
    $pdf->SetFillColor(240, 240, 240);

    foreach ($tabEleve as $value) {
        //gestion de l'alternance de la couleur de fond des lignes
        if ($value['sexe_eleve'] == 1) {
            $date = date_create(stripslashes(utf8_decode($value['date_eleve'])));
            $pdf->Cell(19);
            $pdf->Cell(20, 7, stripslashes(utf8_decode($value['nom_niveau'])), 1, 0, 'C', $fontBool);
            $pdf->Cell(15, 7, 'G', 1, 0, 'C', $fontBool);
            $pdf->Cell(30, 7, date_format($date, 'd/m/Y'), 1, 0, 'C', $fontBool);
            $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['nom_eleve'])), 1, 0, 'L', $fontBool);
            $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['prenom_eleve'])), 1, 0, 'L', $fontBool);
            $pdf->Ln();
            $fontBool = !$fontBool;
        }
    }

    /*     * *******************************************************
     *   Filles ordre alphabétique
     * ******************************************************* */
    $titreTab = 'Les filles par ordre alphabétique';

    $pdf->AddPage();
    $fontBool = true;
    $pdf->SetFillColor(240, 240, 240);

    foreach ($tabEleve as $value) {
        //gestion de l'alternance de la couleur de fond des lignes
        if ($value['sexe_eleve'] == 0) {
            $date = date_create(stripslashes(utf8_decode($value['date_eleve'])));
            $pdf->Cell(19);
            $pdf->Cell(20, 7, stripslashes(utf8_decode($value['nom_niveau'])), 1, 0, 'C', $fontBool);
            $pdf->Cell(15, 7, 'F', 1, 0, 'C', $fontBool);
            $pdf->Cell(30, 7, date_format($date, 'd/m/Y'), 1, 0, 'C', $fontBool);
            $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['nom_eleve'])), 1, 0, 'L', $fontBool);
            $pdf->Cell(45, 7, ' ' . stripslashes(utf8_decode($value['prenom_eleve'])), 1, 0, 'L', $fontBool);
            $pdf->Ln();
            $fontBool = !$fontBool;
        }
    }


    $pdf->SetAuthor('www.bulletin-facile.fr');
    $pdf->SetCreator('www.bulletin-facile.fr');
    if (isset($_GET['out']) && ($_GET['out'] == 'D')) {
        $pdf->Output('bulletin/eleve-' . $donnees['prof_id'] . '-' . $donnees['prof_nom'] . '-' . $trimNomFic . '.pdf', 'D');
    } else {
        $pdf->Output('bulletin/eleve-' . $donnees['prof_id'] . '-' . $donnees['prof_nom'] . '-' . $trimNomFic . '.pdf', 'I');
        $pdf->Output('bulletin/eleve-' . $donnees['prof_id'] . '-' . $donnees['prof_nom'] . '-' . $trimNomFic . '.pdf', 'F');
    }
} else {
    exit();
}
?>